﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Estrutura;


namespace Banco
{

    /// <summary>
    /// Summary description for BD_Usuario_acesso
    /// </summary>
    public class BD_Usuario_acesso
    {
        #region variaveis_globais

        acessaDB.conectaDBMSSQLServer sqlServer = new conectaDBMSSQLServer();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Usuario_acesso()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
        }
        public BD_Usuario_acesso(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public System.Data.DataSet _retorna_Usuario_acesso(
                                                string USUARIO_ACESSO_ID,
                                                string USUARIO_ID,
                                                string USA_DATAACESSO,
                                                string USA_DATASAIDA
                                                )
        {

            if (string.IsNullOrEmpty(USUARIO_ACESSO_ID)) USUARIO_ACESSO_ID = "''";
            if (string.IsNullOrEmpty(USUARIO_ID)) USUARIO_ID = "''";
            if (string.IsNullOrEmpty(USA_DATAACESSO)) USA_DATAACESSO = "''";
            if (string.IsNullOrEmpty(USA_DATASAIDA)) USA_DATASAIDA = "''";

            string sql = "SELECT " +
                                  "USUARIO_ACESSO.USUARIO_ACESSO_ID, " +
                                  "USUARIO_ACESSO.USUARIO_ID, " +
                                  "USUARIO_ACESSO.USA_DATAACESSO, " +
                                  "USUARIO_ACESSO.USA_DATASAIDA " +
                            "FROM USUARIO_ACESSO " +
                            "LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = USUARIO_ACESSO.USUARIO_ID " +
                            "WHERE " +
                            "      (USUARIO_ACESSO.USUARIO_ACESSO_ID = " + USUARIO_ACESSO_ID + "  OR " + USUARIO_ACESSO_ID + " = '') AND " +
                            "      (USUARIO_ACESSO.USUARIO_ID = " + USUARIO_ID + "  OR " + USUARIO_ID + " = '') AND " +
                            "      (USUARIO_ACESSO.USA_DATAACESSO = " + USA_DATAACESSO + "  OR " + USA_DATAACESSO + " = '') AND " +
                            "      (USUARIO_ACESSO.USA_DATASAIDA = " + USA_DATASAIDA + "  OR " + USA_DATASAIDA + " = '') ";

            return sqlServer.retornaDataSet(sql, conectionString);

        }


        public List<ES_Usuario_acesso> _obter_Usuario_acesso(
                                                string USUARIO_ACESSO_ID,
                                                string USUARIO_ID,
                                                string USA_DATAACESSO,
                                                string USA_DATASAIDA
                                                )
        {

            if (string.IsNullOrEmpty(USUARIO_ACESSO_ID)) USUARIO_ACESSO_ID = "''"; else USUARIO_ACESSO_ID = Util.retonarAspas(USUARIO_ACESSO_ID + " % ");
            if (string.IsNullOrEmpty(USUARIO_ID)) USUARIO_ID = "''"; else USUARIO_ID = Util.retonarAspas(USUARIO_ID + " % ");
            if (string.IsNullOrEmpty(USA_DATAACESSO)) USA_DATAACESSO = "''"; else USA_DATAACESSO = Util.retonarAspas(USA_DATAACESSO + " % ");
            if (string.IsNullOrEmpty(USA_DATASAIDA)) USA_DATASAIDA = "''"; else USA_DATASAIDA = Util.retonarAspas(USA_DATASAIDA + " % ");

            string sql = "SELECT " +
                                  "USUARIO_ACESSO.USUARIO_ACESSO_ID, " +
                                  "USUARIO_ACESSO.USUARIO_ID, " +
                                  "USUARIO_ACESSO.USA_DATAACESSO, " +
                                  "USUARIO_ACESSO.USA_DATASAIDA, " +
                                  "USUARIO.USU_LOGIN, "+
                                  "USUARIO.USU_NOME "+
                            "FROM USUARIO_ACESSO " +
                            "LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = USUARIO_ACESSO.USUARIO_ID " +
                            "WHERE " +
                            "      (USUARIO_ACESSO.USUARIO_ACESSO_ID = " + USUARIO_ACESSO_ID + "  OR " + USUARIO_ACESSO_ID + " = '') AND " +
                            "      (USUARIO_ACESSO.USUARIO_ID = " + USUARIO_ID + "  OR " + USUARIO_ID + " = '') AND " +
                            "      (USUARIO_ACESSO.USA_DATAACESSO = " + USA_DATAACESSO + "  OR " + USA_DATAACESSO + " = '') AND " +
                            "      (USUARIO_ACESSO.USA_DATASAIDA = " + USA_DATASAIDA + "  OR " + USA_DATASAIDA + " = '') "+
                            "ORDER BY USUARIO_ACESSO.USUARIO_ACESSO_ID DESC";

            List<ES_Usuario_acesso> lista = new List<ES_Usuario_acesso>();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Usuario_acesso item = new ES_Usuario_acesso();
                    item.USUARIO_ACESSO_ID = dr["USUARIO_ACESSO_ID"].ToString();
                    item.USUARIO_ID = dr["USUARIO_ID"].ToString();
                    item.USU_LOGIN = dr["USU_LOGIN"].ToString();
                    item.USU_NOME = dr["USU_NOME"].ToString();
                    item.USA_DATAACESSO = dr["USA_DATAACESSO"].ToString();
                    item.USA_DATASAIDA = dr["USA_DATASAIDA"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public ES_Usuario_acesso _obter_Usuario_acesso_by_id(
                                                string USUARIO_ACESSO_ID
                                                )
        {

            if (string.IsNullOrEmpty(USUARIO_ACESSO_ID)) USUARIO_ACESSO_ID = "'0'";

            string sql = "SELECT " +
                                  "USUARIO_ACESSO.USUARIO_ACESSO_ID, " +
                                  "USUARIO_ACESSO.USUARIO_ID, " +
                                  "USUARIO_ACESSO.USA_DATAACESSO, " +
                                  "USUARIO_ACESSO.USA_DATASAIDA " +
                            "FROM USUARIO_ACESSO " +
                            "LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = USUARIO_ACESSO.USUARIO_ID " +
                            "WHERE " +
                            "      (USUARIO_ACESSO.USUARIO_ACESSO_ID = " + USUARIO_ACESSO_ID + "  OR " + USUARIO_ACESSO_ID + " = '0') ";

            ES_Usuario_acesso item = new ES_Usuario_acesso();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    item.USUARIO_ACESSO_ID = dr["USUARIO_ACESSO_ID"].ToString();
                    item.USUARIO_ID = dr["USUARIO_ID"].ToString();
                    item.USA_DATAACESSO = dr["USA_DATAACESSO"].ToString();
                    item.USA_DATASAIDA = dr["USA_DATASAIDA"].ToString();

                }
                return item;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public void _inserir_Usuario_acesso(
                                                string USUARIO_ACESSO_ID,
                                                string USUARIO_ID,
                                                string USA_DATAACESSO,
                                                string USA_DATASAIDA
                                                )
        {

            string sql = " INSERT INTO USUARIO_ACESSO " +
                         "      ( " +
                         "          USUARIO_ID, " +
                         "          USA_DATAACESSO " +
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarNull(USUARIO_ID) + ", " +                              
                              "CURRENT_TIMESTAMP " +
                              
                 "      )";
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Usuario_acesso(
                                                string USUARIO_ACESSO_ID,
                                                string USUARIO_ID,
                                                string USA_DATAACESSO,
                                                string USA_DATASAIDA
                                                )
        {

            string sql = " UPDATE USUARIO_ACESSO SET " +
                         "      USUARIO_ID = " + Util.retonarAspas(USUARIO_ID, true) + ", " +
                         "      USA_DATAACESSO = " + Util.retonarAspas(USA_DATAACESSO, true) + ", " +
                         "      USA_DATASAIDA = " + Util.retonarAspas(USA_DATASAIDA, true) +
                         " WHERE USUARIO_ACESSO_ID =  " + USUARIO_ACESSO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }


        public void _atualizar_Usuario_acesso_porId(string USUARIO_ID)
        {

            string sql = "UPDATE USUARIO_ACESSO SET USA_DATASAIDA = CURRENT_TIMESTAMP WHERE USUARIO_ACESSO_ID = "+
                         "      (SELECT TOP 1 USUARIO_ACESSO_ID FROM USUARIO_ACESSO WHERE USUARIO_ID = " + Util.retonarNull(USUARIO_ID) + " AND USA_DATASAIDA IS NULL ORDER BY USUARIO_ACESSO_ID DESC) ";
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }

        public void _excluir_Usuario_acesso(string USUARIO_ACESSO_ID)
        {
            string sql = "DELETE FROM USUARIO_ACESSO WHERE USUARIO_ACESSO_ID = " + USUARIO_ACESSO_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
